package io.practice;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;

//查找符合条件的普通文件
public class ScanFile {
    public static void main(String[] args) throws IOException {
        System.out.println("请输入要扫描的根目录（绝对路径OR相对路径）：");
        Scanner scanner = new Scanner(System.in);
        String rootDirPath = scanner.next();
        File  rootDir = new File(rootDirPath);

        //判断该文件是否是目录
        if(!rootDir.isDirectory()){
            System.out.println("要扫描的目录不存在或不是目录，退出！");
            return;
        }

        System.out.println("请输入要查找的文件名中的字符：");
        String token = scanner.next();

        //用于保存符合条件的文件
        List<File> fileList = new ArrayList<>();

        scanDir(rootDir, token, fileList);
        System.out.println("共找到" + fileList.size() + "符合条件的文件，它们分别是：");

        //遍历符合条件的文件，询问是否需要删除该文件
        for(File file : fileList){
            System.out.println(file.getName());
            System.out.println("请问是否需要删除该文件？（Y/N）：");
            String choice = scanner.next();
            if(choice.toLowerCase().equals("y")){
                file.delete();
                System.out.println("删除成功！");
            }
        }
    }

    //递归查找符合条件的文件并保存到fileList中
    public static void scanDir(File rootDir, String token, List<File> fileList) throws IOException {
        //获取根目录下的所有文件
        File[] files = rootDir.listFiles();
        //空目录
        if(files == null || files.length == 0){
            return;
        }

        //遍历File[]数组，判断元素类型
        for(File file : files){
            //是目录，递归调用scanDir方法继续查找
            if(file.isDirectory()){
                //System.out.println(file.getCanonicalPath());
                scanDir(file, token, fileList);
            } else{
                //是文件且符合条件，将该文件添加到fileList 中
                if(file.getName().contains(token)){
                    System.out.println(file.getCanonicalPath());
                    fileList.add(file);
                }
            }
        }
    }
}
